home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 49 / Amiga Format CD49 (2000-01-17)(Future Publishing)(GB)(Track 1 of 3)[!][issue 2000-02].iso / -serious- / misc / installertools / install < prev    next >
Text File  |  1999-12-06  |  10KB  |  422 lines

  1. ;
  2. ; Installer script for the InstallerTools
  3. ;
  4. ; Copyright © 1999 Dipl.-Inform. Kai Hofmann
  5. ; All rights reserved!
  6. ; Released without any explicit or implicit warranty!
  7. ;
  8. ; EMail: hofmann@hofmann-int.de
  9. ; WWW  : http://www.hofmann-int.de/
  10. ;
  11. ; $VER: Install 43.0 (30.11.99)
  12. ;
  13. ; -----------------------------------------------------------------------------
  14. ; WrapGuide is copyright © 1994-1995 Udo Schuermann
  15. ; -----------------------------------------------------------------------------
  16. ;
  17. ; TODO
  18. ;
  19. ; Uninstaller
  20. ;
  21. ; -----------------------------------------------------------------------------
  22.  
  23.  (set @default-dest "c:")
  24.  
  25.  (if (= @installer-ng-version 0)
  26.    (if (= @installer-version 0)
  27.      (
  28.       ; old Installer
  29.       (set #prop "")
  30.      )
  31.      (
  32.       ; new Installer
  33.       (set #prop "\x1b[2p")
  34.      )
  35.    )
  36.    (
  37.     ; InstallerNG
  38.     (set #prop "\x1b[2p")
  39.    )
  40.  )
  41.  
  42.  (set #wrapguide
  43.    (if (exists "C:WrapGuide")
  44.      1
  45.      (if (exists "C/WrapGuide")
  46.        2
  47.        0
  48.      )
  49.    )
  50.  )
  51.  
  52. ; --- Installer script strings ------------------------------------------------
  53.  
  54.  (set #i 0)
  55.  (while (<> @language (select #i "deutsch" @language)) ; LANGUAGE
  56.    (set #i (+ #i 1))
  57.  )
  58.  (if (= #i 1) ; LANGUAGE
  59.    (set #language "english")
  60.    (set #language @language)
  61.  )
  62.  
  63.  (set #i 0)
  64.  (set #language_default %10) ; LANGUAGE
  65.  (while (<> #language (select #i "deutsch" #language)) ; LANGUAGE
  66.    (
  67.     (set #language_default (shiftright #language_default 1))
  68.     (set #i (+ #i 1))
  69.    )
  70.  )
  71.  
  72.  (select #i ; LANGUAGE
  73.    ( ; deutsch
  74.     (if (= @installer-version 0)
  75.       (
  76.        (set #help_askoptions "Mit einem Installer der älter als Version 42.6 ist, kann es passieren, daß Checkbox-Knöpfe ohne Labels zu sehen sind. Das Setzen dieser Knöpfe wird ignoriert.\n\n")
  77.       )
  78.     )
  79.  
  80.     (set #choice_english      "Englisch")
  81.     (set #choice_german       "Deutsch") ; LANGUAGE
  82.     (set #prompt_copy "Wollen Sie die folgende(n) Datei(en) kopieren?")
  83.     (set #welcome_install   (cat "Willkommen zum " @app-name " Installations-Werkzeug.\n"
  84.                  "Bitte geben Sie an, wie die Installation geschehen soll (basierend auf Ihrem Wissen über den Amiga Computer)."
  85.                 )
  86.     )
  87.     (set #prompt_install_docs    "Welche Art von Dokumenten wollen Sie installieren?")
  88.     (set #prompt_makedir "Das folgende Verzeichnis wurde nicht gefunden, deshalb muß es erzeugt werden:")
  89.     (set #prompt_install_asciidocs "Für welche Sprachen wollen Sie die ASCII Dokumentation installieren?")
  90.     (set #prompt_install_agdocs    "Für welche Sprachen wollen Sie die AmigaGuide® Dokumentation installieren?")
  91.     (set #prompt_wheredocs "Wo wollen Sie die Dokumentation installieren?")
  92.    )
  93.    ( ; english
  94.     (if (= @installer-version 0)
  95.       (
  96.        (set #help_askoptions "With an Installer prior to version 42.6 it can happen that you see checkbox-buttons without labels. Selecting these buttons will be ignored.\n\n")
  97.       )
  98.     )
  99.  
  100.     (set #choice_english   "English")
  101.     (set #choice_german    "German") ; LANGUAGE
  102.     (set #prompt_copy       "Do you want to copy the following file(s)?")
  103.     (set #welcome_install  (cat "Welcome to the " @app-name " installation utility.\n"
  104.                 "Please indicate how the installation should proceed (based upon your knowledge of the Amiga computer)."
  105.                )
  106.     )
  107.     (set #prompt_install_docs "Which type of documents do you want to install?")
  108.     (set #prompt_makedir "The following directory was not found, so it must be created:")
  109.  
  110.     (set #prompt_install_asciidocs "For which languages do you want to install the ASCII documentation?")
  111.     (set #prompt_install_agdocs    "For which languages do you want to install the AmigaGuide® documentation?")
  112.  
  113.     (set #prompt_wheredocs "Where to install the documentation?")
  114.    )
  115.  )
  116.  (if (> @installer-version 0)
  117.    (
  118.     (set #help_askoptions "")
  119.    )
  120.  )
  121.  
  122. ; --- GetVersion procedure ----------------------------------------------------
  123.  
  124.  (procedure P_GetVersion
  125.   ; Param:
  126.   ; #file
  127.   ;
  128.   ; Results:
  129.   ; #ver #rev
  130.   ;
  131.   ; Vars used:
  132.   ; #vernum
  133.  
  134.   (set #vernum (getversion (cat #file)))
  135.   (set #ver (/ #vernum 65536))
  136.   (set #rev (- #vernum (* #ver 65536)))
  137.  )
  138.  
  139. ; --- GetOSVersion ------------------------------------------------------------
  140.  
  141.  (procedure P_GetOSVersion
  142.   ; Param:
  143.   ;
  144.   ; Results:
  145.   ; #os_ver #os_rev
  146.   ;
  147.   ; Used Vars:
  148.   ; #file #ver #rev #vernum
  149.  
  150.   (set #file "libs:version.library")
  151.   (P_GetVersion)
  152.   (set #os_ver #ver)
  153.   (set #os_rev #rev)
  154.  )
  155.  
  156. ; --- BitToLanguage -----------------------------------------------------------
  157.  
  158.  (procedure P_BitToLanguage
  159.   ; Params:
  160.   ; #langmask
  161.   ;
  162.   ; Results:
  163.   ; #langmask #lang
  164.   ;
  165.   ; Used Vars:
  166.   ; #i #bitmask
  167.  
  168.   (set #i 0)
  169.   (set #bitmask %110) ; LANGUAGE
  170.   (while (AND (< #i 25) (NOT (IN #langmask #i))) ; LANGUAGE
  171.     (
  172.      (set #bitmask (BITOR (shiftleft #bitmask 1) %001)) ; LANGUAGE
  173.      (set #i (+ #i 1))
  174.     )
  175.   )
  176.   (set #langmask (BITAND #langmask #bitmask))
  177.   (set #lang (select #i "english" "deutsch" "")) ; LANGUAGE
  178.  )
  179.  
  180. ; --- AskDocFormat ------------------------------------------------------------
  181.  
  182.  (procedure P_AskDocFormats
  183.   ; Params:
  184.   ; #prompt #docmask #defaultmask
  185.   ;
  186.   ; Results:
  187.   ; #docmask
  188.   ;
  189.   ; Used Vars:
  190.   ; #bitmask
  191.  
  192.   (set #docmask (BITAND #docmask %11))
  193.   (if #docmask
  194.     (
  195.      (set #bitmask (askoptions (prompt #prompt)
  196.                    (help #help_askoptions @askoptions-help)
  197.                    (default (BITAND #defaultmask #docmask))
  198.                    (choices
  199.                  (if (IN #docmask 0)
  200.                    (cat #prop "ASCII")
  201.                    ("")
  202.                  )
  203.                  (if (IN #docmask 1)
  204.                    (cat #prop "AmigaGuide®")
  205.                    ("")
  206.                  )
  207.                    )
  208.            )
  209.      )
  210.      (set #docmask (BITAND #docmask #bitmask))
  211.     )
  212.   )
  213.  )
  214.  
  215. ; --- AskLanguages ------------------------------------------------------------
  216.  
  217.  (procedure P_AskLanguages
  218.   ; Params:
  219.   ; #prompt #langmask #defaultmask
  220.   ;
  221.   ; Results:
  222.   ; #langmask
  223.   ;
  224.   ; Used Vars:
  225.   ; #bitmask
  226.  
  227.   (set #langmask (BITAND #langmask %11)) ; LANGUAGE
  228.   (if #langmask
  229.     (
  230.      (set #bitmask (askoptions (prompt #prompt)
  231.                    (help #help_askoptions @askoptions-help)
  232.                    (default (BITAND #defaultmask #langmask))
  233.                    (choices
  234.                  (if (IN #langmask 0)
  235.                    (cat #prop #choice_english)
  236.                    ("")
  237.                  )
  238.                  (if (IN #langmask 1)
  239.                    (cat #prop #choice_german)
  240.                    ("")
  241.                  )
  242.                  ; LANGUAGE
  243.                    )
  244.            )
  245.      )
  246.      (set #langmask (BITAND #langmask #bitmask))
  247.     )
  248.   )
  249.  )
  250.  
  251. ; --- MkDirInfo ---------------------------------------------------------------
  252.  
  253.  (procedure P_MkDirInfo
  254.   ; Params:
  255.   ; #dir #infos #dest-dir
  256.   ;
  257.   ; Results:
  258.   ;
  259.   ; Used Vars:
  260.  
  261.   (if (NOT (exists (tackon #dest-dir #dir) (noreq)))
  262.     (if #infos
  263.       (makedir (tackon #dest-dir #dir) (prompt #prompt_makedir "\n\n" (tackon #dest-dir #dir)) (help @makedir-help) (infos) (confirm "expert"))
  264.       (makedir (tackon #dest-dir #dir) (prompt #prompt_makedir "\n\n" (tackon #dest-dir #dir)) (help @makedir-help) (confirm "expert"))
  265.     )
  266.   )
  267.  )
  268.  
  269. ; --- CpFile ------------------------------------------------------------------
  270.  
  271.  (procedure P_CpFile
  272.   ; Params:
  273.   ; #dir #file #infos #dest-dir #src-dir #pattern
  274.   ;
  275.   ; Results:
  276.   ;
  277.   ; Used Vars:
  278.  
  279.   (if #pattern
  280.     (if #infos
  281.       (copyfiles (prompt #prompt_copy)
  282.          (help @copyfiles-help)
  283.          (source (tackon #src-dir #dir))
  284.          (dest (tackon #dest-dir #dir))
  285.          (pattern #file)
  286.          (files)
  287.          (infos)
  288.          (optional "nofail" "force")
  289.          (confirm "expert")
  290.       )
  291.       (copyfiles (prompt #prompt_copy)
  292.          (help @copyfiles-help)
  293.          (source (tackon #src-dir #dir))
  294.          (dest (tackon #dest-dir #dir))
  295.          (pattern #file)
  296.          (files)
  297.          (optional "nofail" "force")
  298.          (confirm "expert")
  299.       )
  300.     )
  301.     (if #infos
  302.       (copyfiles (prompt #prompt_copy)
  303.          (help @copyfiles-help)
  304.          (source (tackon (tackon #src-dir #dir) #file))
  305.          (dest (tackon #dest-dir #dir))
  306.          (files)
  307.          (infos)
  308.          (optional "nofail" "force")
  309.          (confirm "expert")
  310.       )
  311.       (copyfiles (prompt #prompt_copy)
  312.          (help @copyfiles-help)
  313.          (source (tackon (tackon #src-dir #dir) #file))
  314.          (dest (tackon #dest-dir #dir))
  315.          (files)
  316.          (optional "nofail" "force")
  317.          (confirm "expert")
  318.       )
  319.     )
  320.   )
  321.  )
  322.  
  323. ; -----------------------------------------------------------------------------
  324.  
  325.  ( ; Install
  326.   (welcome #welcome_install)
  327.   (complete 0)
  328.   (P_GetOSVersion)
  329.   (copyfiles (prompt #prompt_copy)
  330.          (help @copyfiles-help)
  331.          (source "C")
  332.          (dest "C:")
  333.          (choices
  334.         "StartupInsert"
  335.         "StartupRemove"
  336.         "StartupCheck"
  337.          )
  338.          (confirm)
  339.   )
  340.   (complete 50)
  341.   (set #prompt #prompt_install_docs)
  342.   (set #docmask %10)
  343.   (set #defaultmask %10)
  344.   (P_AskDocFormats)
  345.  
  346.   ; asciidocs (P_AskLanguages)
  347.   (if (IN #docmask 0)
  348.     (
  349.      (set #prompt #prompt_install_asciidocs)
  350.      (set #langmask %01)
  351.      (set #defaultmask (if (= (BITAND #language_default #langmask) 0) %01 #language_default)) ; LANGUAGE
  352.      (P_AskLanguages)
  353.      (set #install_asciidocs #langmask)
  354.     )
  355.     (set #install_asciidocs 0)
  356.   )
  357.  
  358.   ; agdocs (P_AskLanguages)
  359.   (if (IN #docmask 1)
  360.     (
  361.      (set #prompt #prompt_install_agdocs)
  362.      (set #langmask %01)
  363.      (set #defaultmask (if (= (BITAND #language_default #langmask) 0) %01 #language_default)) ; LANGUAGE
  364.      (P_AskLanguages)
  365.      (set #install_agdocs #langmask)
  366.     )
  367.     (set #install_agdocs 0)
  368.   )
  369.  
  370.   (set #src-dir "Docs")
  371.   (set #dest-dir (askdir (prompt #prompt_wheredocs)
  372.                  (help @askdir-help)
  373.                  (default "Help:")
  374.              )
  375.   )
  376.   (complete 75)
  377.  
  378.   ; asciidocs
  379.   (if #install_asciidocs
  380.     (
  381.      (set #infos 1)
  382.      (set #pattern 0)
  383.      (set #langmask #install_asciidocs)
  384.      (while #langmask
  385.        (
  386.     (P_BitToLanguage)
  387.     (set #dir #lang)
  388.     (P_MkDirInfo)
  389.     (set #file (cat @app-name ".doc"))
  390.     (P_CpFile)
  391.        )
  392.      )
  393.     )
  394.   )
  395.   (complete 87)
  396.  
  397.   ; agdocs
  398.   (if #install_agdocs
  399.     (
  400.      (set #infos 1)
  401.      (set #pattern 0)
  402.      (set #langmask #install_agdocs)
  403.      (while #langmask
  404.        (
  405.     (P_BitToLanguage)
  406.     (set #dir #lang)
  407.     (P_MkDirInfo)
  408.     (set #file (cat @app-name ".guide"))
  409.     (P_CpFile)
  410.     (if (AND #wrapguide (< #os_ver 39))
  411.       (if (= #wrapguide 1)
  412.         (run ("stack 50000\nC:WrapGuide %s 65" (tackon (tackon #dest-dir #dir) #file)))
  413.         (run ("stack 50000\nC/WrapGuide %s 65" (tackon (tackon #dest-dir #dir) #file)))
  414.       )
  415.     )
  416.        )
  417.      )
  418.     )
  419.   )
  420.   (complete 100)
  421.  )
  422.